from abc import ABC
from typing import Protocol


class BaseApi(Protocol):
    async def send_signed_request(self, http_method: str, url_path: str, payload=None):
        raise NotImplementedError

    def _dispatch_request(self, http_method: str):
        raise NotImplementedError


class PaymentClient(BaseApi, ABC):
    async def create_bill(self, amount: float, order_id: int, currency_in: str = "RUB"):
        """Создаем новый платеж"""
        raise NotImplementedError

    async def get_bill(self, bill_id: str):
        """Получаем платеж по id"""
        raise NotImplementedError

    async def get_bills(self):
        """Получаем все платежи"""
        raise NotImplementedError

    async def get_merchant_balance(self):
        """Получаем баланс магазина"""
        raise NotImplementedError
